// Holo   设置
const config = {
  // 界面选项
  layout: {
    titlePlaceHolder: '选择功能：',
    titleText: ['循环刷图', '基建', '好友访问']
  },
  // 重复刷图
  repeatMap: {
    // 蓝色 开始行动
    blue: {
      x: 1108,
      y: 640,
      c: "#0090d2"
    },
    // 红色 开始行动
    red: {
      x: 1100,
      y: 507,
      c: "#4b0901"
    },
    // 结束坐标比对
    end: {
      x1: 1028,
      y1: 489,
      c1: "#ff9602",
      x2: 359,
      y2: 505,
      c2: "#3fefff"
    },
    // 没理智
    san: {
      x1: 657,
      y1: 557,
      c1: '#f0f0f0',
      x2: 143,
      y2: 278,
      c2: '#ffffff',
      nox: 780,
      noy: 562,
      noc: "#313131"
    }
  },
  // 菜单
  menu: {
    x: 267,
    y: 35,
    c: '#cfcfcf',
    home: {
      x: 95,
      y: 161,
      c: '#1c1c1c'
    }
  },
  // 好友会客访问
  friends: {
    x: 365,
    y: 566,
    c: '#424242',
    list: {
      x: 133,
      y: 208,
      c: '#2a2a2a'
    },
    go: {
      x: 1002,
      y: 160
    },
    ing: {
      x: 1205,
      y: 656,
      c: '#d15806'
    }
  },
  // 采购中心
  shop: {
    x: 1198,
    y: 173,
    c: '#f0f0e8'
  }

};


// Holo   权限校验
auto();
if (!requestScreenCapture(false)) {
  toast("请求截图失败");
  exit();
};

// Holo   主线程
main();
function main() {
  init();
  console.log('脚本执行完成，结束脚本！')
  exit();
};

// Holo   初始化
function init() {
  const { titlePlaceHolder, titleText } = config.layout;
  while (true) {
    let selectValue = dialogs.multiChoice(titlePlaceHolder, titleText);
    switch (selectValue.toString()) {
      case '0':
        sleep(1000);
        repeatMap();
        break;
      case '1':
        toast('基建');
        break;
      case '2':
        sleep(1000);
        friends();
        break;
      case '0,1':
        toast('刷完和基建');
        break;
      case '0,2': {
        sleep(1000);
        repeatMap();
        sleep(1000);
        backHome();
        console.log('开始好友访问');
        sleep(2000);
        friends();
        break;
      }
      case '1,2':
        toast('基建和信用点');
        break;
      default:
        let count = rawInput('请输入刷图次数：');
        sleep(1000);
        if (count.length > 0) {
          repeatMap(count);
          break;
        } else {
          toast('溜了溜了。。')
          break;
        }
    };
    break;
  }
};

// Holo   ----------功能----------

// Holo   重复刷图 
function repeatMap(count) {
  const { blue, red } = config.repeatMap;
  let i = 1,
    san = true,
    isSan0 = false;
  count ? count = count : count = 999;
  console.show();
  console.clear();
  while (true) {
    // count -> 自定义刷图次数
    if (i <= count) {
      new Promise(() => _cycle(blue.c, blue.x, blue.y)) // 蓝色 开始行动
        // 红色 开始行动
        .then(new Promise(() => {
          // 判断理智是不是为0
          isSan0 = _san0();
          if (!isSan0) {
            _cycle(red.c, red.x, red.y)
            console.log('第' + i + '次刷图');
          }
        })
          // 结算界面
          .then(new Promise(() => {
            if (!isSan0) {
              while (true) {
                const { x1, y1, c1, x2, y2, c2 } = config.repeatMap.end;
                let img = captureScreen(),
                  is1 = images.detectsColor(img, c1, x1, y1, 0),
                  is2 = images.detectsColor(img, c2, x2, y2, 0);
                if (is1 && is2) {
                  i++;
                  sleep(2500);
                  press(x1, y1, 200);
                  break;
                }
                sleep(10000);
              }
            }
          }))
        )
      // 刷图完成后
      if (!san) {
        console.log('一共刷图' + (i - 1) + '次 。');
        console.info('刷图完成！');
        break;
      }
    } else {
      // 自定义刷图 完成
      console.info('自定义刷图' + (i - 1) + '次，已完成。');
      break;
    }
  };
  // methods 
  function _cycle(color, x, y) {
    while (true) {
      let isColor = uFindColorsClick(color, x, y, 0);
      if (isColor) break; else sleep(2000);
    };
  };

  function _san0() {
    const { x1, y1, c1, x2, y2, c2, nox, noy, noc } = config.repeatMap.san;
    let img = captureScreen(),
      // 多点颜色比对
      is1 = images.detectsColor(img, c1, x1, y1, 0),
      is2 = images.detectsColor(img, c2, x2, y2, 0);
    if (is1 && is2) {
      _cycle(noc, nox, noy);
      san = false;
    }
    return is1 && is2
  }
};

// Holo   好友会客访问  
function friends() {
  const { x, y, c, list, go, ing } = config.friends;
  uFindColorsClick(c, x, y, 5);
  sleep(1000);
  uFindColorsClick(list.c, list.x, list.y, 5);
  sleep(1000);
  press(go.x, go.y, 200);
  while (true) {
    sleep(3000);
    let isIng = uFindColorsClick(ing.c, ing.x, ing.y, 15);
    if (!isIng) { break };
    sleep(3000)
  }
}

// Holo   信用点领取  -this


// Holo   -------------------------
// Holo  找色点击
function uFindColorsClick(color, x, y, threshold) {
  let isColor = images.detectsColor(captureScreen(), color, x, y, threshold);
  if (isColor) {
    sleep(500);
    press(x, y, 200);
    sleep(1500);
    if (images.detectsColor(captureScreen(), color, x, y, threshold)) { press(x, y, 200); }
  };
  return isColor;
};

//Holo  打开菜单
function menu() {
  const { x, y, c } = config.menu;
  if (images.detectsColor(captureScreen(), c, x, y, 10)) {
    sleep(2000);
    press(x, y, 200);
  }
};
//Holo  通过菜单返回首页
function backHome() {
  const { x, y, c } = config.menu.home;
  menu();
  sleep(1000);
  uFindColorsClick(c, x, y, 10);
}

// Holo   通过菜单进入采购中心
function shop() {
  const { x, y, c } = config.shop;
  menu();
  sleep(1000);
  uFindColorsClick(c, x, y, 5);
}

// Holo   ---------- 子线程 ----------

// Holo   升级检测


// Holo   -----------------------------
